package integracion;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import dominio.*;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ControlCotizacion {

    private SqlMapClient sqlMap;

    public ControlCotizacion() throws IOException, SQLException {

        String resource = "configuracion/sql-map-config.xml";
        Reader reader = Resources.getResourceAsReader(resource);
        this.sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

    }


    public boolean agregarCotizacion(Cotizacion cotizacion) {

        try {
            getSqlMap().insert("agregarCotizacion",cotizacion);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public List<Cotizacion> consultarCotizaciones(){

        try{

            List cotizaciones = sqlMap.queryForList("consultarCotizaciones");
            return cotizaciones;

        } catch (SQLException e){
            Logger.getLogger(ControlCotizacion.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Cotizacion> consultarFechaCotizaciones(){

        try{

            List cotizaciones = sqlMap.queryForList("consultarFechaCotizaciones");
            return cotizaciones;

        } catch (SQLException e){
            Logger.getLogger(ControlCotizacion.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Cotizacion> consultarCotizacionesSinPagar(){

        try{

            List cotizaciones = sqlMap.queryForList("consultarCotizacionesSinPagar");
            return cotizaciones;

        } catch (SQLException e){
            Logger.getLogger(ControlCotizacion.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Cotizacion> consultarCotizacionesSinCuotas(){

        try{

            List cotizaciones = sqlMap.queryForList("consultarCotizacionesSinCuotas");
            return cotizaciones;

        } catch (SQLException e){
            Logger.getLogger(ControlCotizacion.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Cotizacion> consultarCotizacionesInsumosSubcontratar(){

        try{

            List cotizaciones = sqlMap.queryForList("consultarCotizacionesInsumosSubcontratar");
            return cotizaciones;

        } catch (SQLException e){
            Logger.getLogger(ControlCotizacion.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Cotizacion> consultarCotizacionesEventos(){

        try{

            List cotizaciones = sqlMap.queryForList("consultarCotizacionesEventos");
            return cotizaciones;

        } catch (SQLException e){
            Logger.getLogger(ControlCotizacion.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public List<Cotizacion> consultarCotizacionesFactura(){

        try{

            List cotizaciones = sqlMap.queryForList("consultarCotizacionesFactura");
            return cotizaciones;

        } catch (SQLException e){
            Logger.getLogger(ControlCotizacion.class.getName()).log(Level.SEVERE,null,e);
            return null;
        }

    }

    public boolean eliminarCotizacion(Cotizacion cotizacion) {

        try {
            sqlMap.delete("eliminarCotizacion",cotizacion);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public boolean modificarCotizacion(Cotizacion cotizacion) {

        try {
            sqlMap.update("modificarCotizacion",cotizacion);
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }

    public SqlMapClient getSqlMap() {
        return sqlMap;
    }

    public void setSqlMap(SqlMapClient sqlMap) {
        this.sqlMap = sqlMap;
    }

}
